package com.ucode.model.cgms.convert;

import com.ucode.model.cgms.CgmsRebateFlow;
import com.ucode.model.cgms.form.CgmsRebateFlowForm;
import com.ucode.model.cgms.vo.CgmsRebateFlowVO;
import com.ucode.tool.base.Paginator;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 返点流水转换器
 * @Author: Claude
 * @Date: 2023/05/26 10:55
 * @Version: 1.0
 */
@Mapper
public interface CgmsRebateFlowConvert {

    CgmsRebateFlowConvert INSTANCE = Mappers.getMapper(CgmsRebateFlowConvert.class);

    /**
     * Form转Entity
     * @param form 表单
     * @return 实体
     */
    CgmsRebateFlow convert(CgmsRebateFlowForm form);

    /**
     * Entity转VO
     * @param entity 实体
     * @return VO
     */
    CgmsRebateFlowVO convert(CgmsRebateFlow entity);

    /**
     * 更新Entity
     * @param form 表单
     * @param entity 实体
     */
    void update(CgmsRebateFlowForm form, @MappingTarget CgmsRebateFlow entity);

    /**
     * Entity列表转VO列表
     * @param list 实体列表
     * @return VO列表
     */
    List<CgmsRebateFlowVO> convertList(List<CgmsRebateFlow> list);

    /**
     * 分页对象转换
     * @param page 实体分页对象
     * @return VO分页对象
     */
    Paginator<CgmsRebateFlowVO> convertPage(Paginator<CgmsRebateFlow> page);
} 